[INFO] cloning repository https://github.com/VoidFunOfficial/rust-learn
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/VoidFunOfficial/rust-learn" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FVoidFunOfficial%2Frust-learn", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FVoidFunOfficial%2Frust-learn'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f7485a222d158f0b4bdcbaf4e089ac1f9bc143e2
[INFO] fixing VoidFunOfficial/rust-learn against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=start=2015 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FVoidFunOfficial%2Frust-learn" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/VoidFunOfficial/rust-learn
[INFO] finished tweaking git repo https://github.com/VoidFunOfficial/rust-learn
[INFO] tweaked toml for git repo https://github.com/VoidFunOfficial/rust-learn written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/VoidFunOfficial/rust-learn on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/VoidFunOfficial/rust-learn already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] f1218f261c256fc9e126c4f00f391430a2a2c849625471a3544053d80a26eaf1
[INFO] running `Command { std: "docker" "start" "f1218f261c256fc9e126c4f00f391430a2a2c849625471a3544053d80a26eaf1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f1218f261c256fc9e126c4f00f391430a2a2c849625471a3544053d80a26eaf1" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f1218f261c256fc9e126c4f00f391430a2a2c849625471a3544053d80a26eaf1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f1218f261c256fc9e126c4f00f391430a2a2c849625471a3544053d80a26eaf1" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=start=2015", kill_on_drop: false }`
[INFO] [stderr]     Checking RustLearn v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0252]: the name `io` is defined multiple times
[INFO] [stdout]    --> src/course/class7.rs:135:23
[INFO] [stdout]     |
[INFO] [stdout] 132 |         use std::{cmp::Ordering, io};
[INFO] [stdout]     |                                  -- previous import of the module `io` here
[INFO] [stdout] ...
[INFO] [stdout] 135 |         use std::io::{self, Write};
[INFO] [stdout]     |                       ^^^^--
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       `io` reimported here
[INFO] [stdout]     |                       help: remove unnecessary import
[INFO] [stdout]     |
[INFO] [stdout]     = note: `io` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: 1 positional argument in format string, but no arguments were given
[INFO] [stdout]    --> src/course/class18.rs:397:32
[INFO] [stdout]     |
[INFO] [stdout] 397 |     println!("           \"mov {}, 42\",");
[INFO] [stdout]     |                                ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected `,`, found `+`
[INFO] [stdout]    --> src/course/mod.rs:123:23
[INFO] [stdout]     |
[INFO] [stdout] 123 |         println!("\n" + "=".repeat(60).as_str());
[INFO] [stdout]     |                       ^ expected `,`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected `,`, found `.`
[INFO] [stdout]    --> src/course/mod.rs:125:21
[INFO] [stdout]     |
[INFO] [stdout] 125 |         println!("=".repeat(60));
[INFO] [stdout]     |                     ^ expected `,`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: argument never used
[INFO] [stdout]    --> src/course/mod.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 125 |         println!("=".repeat(60));
[INFO] [stdout]     |                  --- ^^^^^^^^^^ argument never used
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  formatting specifier missing
[INFO] [stdout]     |
[INFO] [stdout] help: format specifiers use curly braces, consider adding a format specifier
[INFO] [stdout]     |
[INFO] [stdout] 125 |         println!("={}".repeat(60));
[INFO] [stdout]     |                    ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected `,`, found `+`
[INFO] [stdout]    --> src/course/mod.rs:135:19
[INFO] [stdout]     |
[INFO] [stdout] 135 |     println!("\n" + "🎉".repeat(20));
[INFO] [stdout]     |                   ^ expected `,`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected `,`, found `.`
[INFO] [stdout]    --> src/course/mod.rs:139:17
[INFO] [stdout]     |
[INFO] [stdout] 139 |     println!("🎉".repeat(20));
[INFO] [stdout]     |                  ^ expected `,`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: argument never used
[INFO] [stdout]    --> src/course/mod.rs:139:18
[INFO] [stdout]     |
[INFO] [stdout] 139 |     println!("🎉".repeat(20));
[INFO] [stdout]     |              ---- ^^^^^^^^^^ argument never used
[INFO] [stdout]     |              |
[INFO] [stdout]     |              formatting specifier missing
[INFO] [stdout]     |
[INFO] [stdout] help: format specifiers use curly braces, consider adding a format specifier
[INFO] [stdout]     |
[INFO] [stdout] 139 |     println!("🎉{}".repeat(20));
[INFO] [stdout]     |                 ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected `,`, found `*`
[INFO] [stdout]    --> src/course/mod.rs:171:18
[INFO] [stdout]     |
[INFO] [stdout] 171 |     println!("=" * 50);
[INFO] [stdout]     |                  ^ expected `,`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected `,`, found `*`
[INFO] [stdout]    --> src/main.rs:163:18
[INFO] [stdout]     |
[INFO] [stdout] 163 |     println!("=" * 40);
[INFO] [stdout]     |                  ^ expected `,`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `io` is defined multiple times
[INFO] [stdout]    --> src/course/class7.rs:135:23
[INFO] [stdout]     |
[INFO] [stdout] 132 |         use std::{cmp::Ordering, io};
[INFO] [stdout]     |                                  -- previous import of the module `io` here
[INFO] [stdout] ...
[INFO] [stdout] 135 |         use std::io::{self, Write};
[INFO] [stdout]     |                       ^^^^--
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       `io` reimported here
[INFO] [stdout]     |                       help: remove unnecessary import
[INFO] [stdout]     |
[INFO] [stdout]     = note: `io` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: extern blocks must be unsafe
[INFO] [stdout]    --> src/course/class18.rs:154:5
[INFO] [stdout]     |
[INFO] [stdout] 154 | /     extern "C" {
[INFO] [stdout] 155 | |         fn abs(input: i32) -> i32;
[INFO] [stdout] 156 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: extern blocks must be unsafe
[INFO] [stdout]    --> src/course/class18.rs:193:5
[INFO] [stdout]     |
[INFO] [stdout] 193 | /     extern "C" {
[INFO] [stdout] 194 | |         fn strlen(s: *const std::os::raw::c_char) -> std::os::raw::c_ulong;
[INFO] [stdout] 195 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `super::error`
[INFO] [stdout]   --> src/course/class20.rs:81:20
[INFO] [stdout]    |
[INFO] [stdout] 81 |         use super::error::{AppError, Result};
[INFO] [stdout]    |                    ^^^^^ could not find `error` in `super`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find `module_basics` in `crate`
[INFO] [stdout]   --> src/course/class7.rs:74:20
[INFO] [stdout]    |
[INFO] [stdout] 74 |             crate::module_basics::restaurant::front_of_house::hosting::add_to_waitlist();
[INFO] [stdout]    |                    ^^^^^^^^^^^^^ could not find `module_basics` in the crate root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find `visibility_rules` in `crate`
[INFO] [stdout]    --> src/course/class7.rs:214:27
[INFO] [stdout]     |
[INFO] [stdout] 214 |             pub(in crate::visibility_rules::visibility_examples) fn path_public() {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^ could not find `visibility_rules` in the crate root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `repeat` in this scope
[INFO] [stdout]    --> src/course/mod.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 125 |         println!("=".repeat(60));
[INFO] [stdout]     |                      ^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing one of these functions
[INFO] [stdout]     |
[INFO] [stdout]   7 + use crate::io::repeat;
[INFO] [stdout]     |
[INFO] [stdout]   7 + use std::array::repeat;
[INFO] [stdout]     |
[INFO] [stdout]   7 + use std::io::repeat;
[INFO] [stdout]     |
[INFO] [stdout]   7 + use std::iter::repeat;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `repeat` in this scope
[INFO] [stdout]    --> src/course/mod.rs:139:18
[INFO] [stdout]     |
[INFO] [stdout] 139 |     println!("🎉".repeat(20));
[INFO] [stdout]     |                   ^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing one of these functions
[INFO] [stdout]     |
[INFO] [stdout]   7 + use crate::io::repeat;
[INFO] [stdout]     |
[INFO] [stdout]   7 + use std::array::repeat;
[INFO] [stdout]     |
[INFO] [stdout]   7 + use std::io::repeat;
[INFO] [stdout]     |
[INFO] [stdout]   7 + use std::iter::repeat;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]    --> src/course/class2.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 121 |         'inner: for y in 1..=3 {
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_labels)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]    --> src/course/class7.rs:135:23
[INFO] [stdout]     |
[INFO] [stdout] 135 |         use std::io::{self, Write};
[INFO] [stdout]     |                       ^^^^  ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]    --> src/course/class7.rs:265:9
[INFO] [stdout]     |
[INFO] [stdout] 265 |     use std::fs;
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude::*`
[INFO] [stdout]    --> src/course/class7.rs:266:9
[INFO] [stdout]     |
[INFO] [stdout] 266 |     use std::io::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `factorial`
[INFO] [stdout]    --> src/course/class16.rs:215:18
[INFO] [stdout]     |
[INFO] [stdout] 215 |     macro_rules! factorial {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Arc`
[INFO] [stdout]    --> src/course/class18.rs:253:28
[INFO] [stdout]     |
[INFO] [stdout] 253 |     use std::sync::{Mutex, Arc};
[INFO] [stdout]     |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/course/class20.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]   --> src/course/class20.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]   --> src/course/class20.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::io::{self, Write};
[INFO] [stdout]    |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: 1 positional argument in format string, but no arguments were given
[INFO] [stdout]    --> src/course/class18.rs:397:32
[INFO] [stdout]     |
[INFO] [stdout] 397 |     println!("           \"mov {}, 42\",");
[INFO] [stdout]     |                                ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected `,`, found `+`
[INFO] [stdout]    --> src/course/mod.rs:123:23
[INFO] [stdout]     |
[INFO] [stdout] 123 |         println!("\n" + "=".repeat(60).as_str());
[INFO] [stdout]     |                       ^ expected `,`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected `,`, found `.`
[INFO] [stdout]    --> src/course/mod.rs:125:21
[INFO] [stdout]     |
[INFO] [stdout] 125 |         println!("=".repeat(60));
[INFO] [stdout]     |                     ^ expected `,`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: argument never used
[INFO] [stdout]    --> src/course/mod.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 125 |         println!("=".repeat(60));
[INFO] [stdout]     |                  --- ^^^^^^^^^^ argument never used
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  formatting specifier missing
[INFO] [stdout]     |
[INFO] [stdout] help: format specifiers use curly braces, consider adding a format specifier
[INFO] [stdout]     |
[INFO] [stdout] 125 |         println!("={}".repeat(60));
[INFO] [stdout]     |                    ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected `,`, found `+`
[INFO] [stdout]    --> src/course/mod.rs:135:19
[INFO] [stdout]     |
[INFO] [stdout] 135 |     println!("\n" + "🎉".repeat(20));
[INFO] [stdout]     |                   ^ expected `,`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected `,`, found `.`
[INFO] [stdout]    --> src/course/mod.rs:139:17
[INFO] [stdout]     |
[INFO] [stdout] 139 |     println!("🎉".repeat(20));
[INFO] [stdout]     |                  ^ expected `,`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: argument never used
[INFO] [stdout]    --> src/course/mod.rs:139:18
[INFO] [stdout]     |
[INFO] [stdout] 139 |     println!("🎉".repeat(20));
[INFO] [stdout]     |              ---- ^^^^^^^^^^ argument never used
[INFO] [stdout]     |              |
[INFO] [stdout]     |              formatting specifier missing
[INFO] [stdout]     |
[INFO] [stdout] help: format specifiers use curly braces, consider adding a format specifier
[INFO] [stdout]     |
[INFO] [stdout] 139 |     println!("🎉{}".repeat(20));
[INFO] [stdout]     |                 ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected `,`, found `*`
[INFO] [stdout]    --> src/course/mod.rs:171:18
[INFO] [stdout]     |
[INFO] [stdout] 171 |     println!("=" * 50);
[INFO] [stdout]     |                  ^ expected `,`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected `,`, found `*`
[INFO] [stdout]    --> src/main.rs:163:18
[INFO] [stdout]     |
[INFO] [stdout] 163 |     println!("=" * 40);
[INFO] [stdout]     |                  ^ expected `,`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: extern blocks must be unsafe
[INFO] [stdout]    --> src/course/class18.rs:154:5
[INFO] [stdout]     |
[INFO] [stdout] 154 | /     extern "C" {
[INFO] [stdout] 155 | |         fn abs(input: i32) -> i32;
[INFO] [stdout] 156 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: extern blocks must be unsafe
[INFO] [stdout]    --> src/course/class18.rs:193:5
[INFO] [stdout]     |
[INFO] [stdout] 193 | /     extern "C" {
[INFO] [stdout] 194 | |         fn strlen(s: *const std::os::raw::c_char) -> std::os::raw::c_ulong;
[INFO] [stdout] 195 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `super::error`
[INFO] [stdout]   --> src/course/class20.rs:81:20
[INFO] [stdout]    |
[INFO] [stdout] 81 |         use super::error::{AppError, Result};
[INFO] [stdout]    |                    ^^^^^ could not find `error` in `super`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find `module_basics` in `crate`
[INFO] [stdout]   --> src/course/class7.rs:74:20
[INFO] [stdout]    |
[INFO] [stdout] 74 |             crate::module_basics::restaurant::front_of_house::hosting::add_to_waitlist();
[INFO] [stdout]    |                    ^^^^^^^^^^^^^ could not find `module_basics` in the crate root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find `visibility_rules` in `crate`
[INFO] [stdout]    --> src/course/class7.rs:214:27
[INFO] [stdout]     |
[INFO] [stdout] 214 |             pub(in crate::visibility_rules::visibility_examples) fn path_public() {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^ could not find `visibility_rules` in the crate root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `repeat` in this scope
[INFO] [stdout]    --> src/course/mod.rs:125:22
[INFO] [stdout]     |
[INFO] [stdout] 125 |         println!("=".repeat(60));
[INFO] [stdout]     |                      ^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing one of these functions
[INFO] [stdout]     |
[INFO] [stdout]   7 + use crate::io::repeat;
[INFO] [stdout]     |
[INFO] [stdout]   7 + use std::array::repeat;
[INFO] [stdout]     |
[INFO] [stdout]   7 + use std::io::repeat;
[INFO] [stdout]     |
[INFO] [stdout]   7 + use std::iter::repeat;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `repeat` in this scope
[INFO] [stdout]    --> src/course/mod.rs:139:18
[INFO] [stdout]     |
[INFO] [stdout] 139 |     println!("🎉".repeat(20));
[INFO] [stdout]     |                   ^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing one of these functions
[INFO] [stdout]     |
[INFO] [stdout]   7 + use crate::io::repeat;
[INFO] [stdout]     |
[INFO] [stdout]   7 + use std::array::repeat;
[INFO] [stdout]     |
[INFO] [stdout]   7 + use std::io::repeat;
[INFO] [stdout]     |
[INFO] [stdout]   7 + use std::iter::repeat;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]    --> src/course/class2.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 121 |         'inner: for y in 1..=3 {
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_labels)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]    --> src/course/class7.rs:135:23
[INFO] [stdout]     |
[INFO] [stdout] 135 |         use std::io::{self, Write};
[INFO] [stdout]     |                       ^^^^  ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]    --> src/course/class7.rs:265:9
[INFO] [stdout]     |
[INFO] [stdout] 265 |     use std::fs;
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude::*`
[INFO] [stdout]    --> src/course/class7.rs:266:9
[INFO] [stdout]     |
[INFO] [stdout] 266 |     use std::io::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/course/class12.rs:378:9
[INFO] [stdout]     |
[INFO] [stdout] 378 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `factorial`
[INFO] [stdout]    --> src/course/class16.rs:215:18
[INFO] [stdout]     |
[INFO] [stdout] 215 |     macro_rules! factorial {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Arc`
[INFO] [stdout]    --> src/course/class18.rs:253:28
[INFO] [stdout]     |
[INFO] [stdout] 253 |     use std::sync::{Mutex, Arc};
[INFO] [stdout]     |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/course/class20.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]   --> src/course/class20.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]   --> src/course/class20.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::io::{self, Write};
[INFO] [stdout]    |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed for `HashMap<_, _>`
[INFO] [stdout]    --> src/course/class7.rs:141:17
[INFO] [stdout]     |
[INFO] [stdout] 141 |             let _map = HashMap::new();
[INFO] [stdout]     |                 ^^^^   -------------- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `_map` an explicit type, where the type for type parameter `K` is specified
[INFO] [stdout]     |
[INFO] [stdout] 141 |             let _map: HashMap<K, V> = HashMap::new();
[INFO] [stdout]     |                     +++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/course/class8.rs:247:54
[INFO] [stdout]     |
[INFO] [stdout] 247 |     let (lower, upper): (BTreeSet<_>, BTreeSet<_>) = numbers.split_off(&5);
[INFO] [stdout]     |                         --------------------------   ^^^^^^^^^^^^^^^^^^^^^ expected `(BTreeSet<_>, BTreeSet<_>)`, found `BTreeSet<{integer}>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         expected due to this
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected tuple `(BTreeSet<_>, BTreeSet<_>)`
[INFO] [stdout]               found struct `BTreeSet<{integer}>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Article: Clone` is not satisfied
[INFO] [stdout]    --> src/course/class10.rs:280:22
[INFO] [stdout]     |
[INFO] [stdout] 280 |     complex_function(&article, &data);
[INFO] [stdout]     |     ---------------- ^^^^^^^^ the trait `Clone` is not implemented for `Article`
[INFO] [stdout]     |     |
[INFO] [stdout]     |     required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `complex_function`
[INFO] [stdout]    --> src/course/class10.rs:268:22
[INFO] [stdout]     |
[INFO] [stdout] 266 |     fn complex_function<T, U>(_t: &T, _u: &U) 
[INFO] [stdout]     |        ---------------- required by a bound in this function
[INFO] [stdout] 267 |     where 
[INFO] [stdout] 268 |         T: Summary + Clone,
[INFO] [stdout]     |                      ^^^^^ required by this bound in `complex_function`
[INFO] [stdout] help: consider annotating `Article` with `#[derive(Clone)]`
[INFO] [stdout]     |
[INFO] [stdout] 212 +     #[derive(Clone)]
[INFO] [stdout] 213 |     struct Article {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed for `HashMap<_, _>`
[INFO] [stdout]    --> src/course/class7.rs:141:17
[INFO] [stdout]     |
[INFO] [stdout] 141 |             let _map = HashMap::new();
[INFO] [stdout]     |                 ^^^^   -------------- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `_map` an explicit type, where the type for type parameter `K` is specified
[INFO] [stdout]     |
[INFO] [stdout] 141 |             let _map: HashMap<K, V> = HashMap::new();
[INFO] [stdout]     |                     +++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/course/class8.rs:247:54
[INFO] [stdout]     |
[INFO] [stdout] 247 |     let (lower, upper): (BTreeSet<_>, BTreeSet<_>) = numbers.split_off(&5);
[INFO] [stdout]     |                         --------------------------   ^^^^^^^^^^^^^^^^^^^^^ expected `(BTreeSet<_>, BTreeSet<_>)`, found `BTreeSet<{integer}>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         expected due to this
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected tuple `(BTreeSet<_>, BTreeSet<_>)`
[INFO] [stdout]               found struct `BTreeSet<{integer}>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Article: Clone` is not satisfied
[INFO] [stdout]    --> src/course/class10.rs:280:22
[INFO] [stdout]     |
[INFO] [stdout] 280 |     complex_function(&article, &data);
[INFO] [stdout]     |     ---------------- ^^^^^^^^ the trait `Clone` is not implemented for `Article`
[INFO] [stdout]     |     |
[INFO] [stdout]     |     required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `complex_function`
[INFO] [stdout]    --> src/course/class10.rs:268:22
[INFO] [stdout]     |
[INFO] [stdout] 266 |     fn complex_function<T, U>(_t: &T, _u: &U) 
[INFO] [stdout]     |        ---------------- required by a bound in this function
[INFO] [stdout] 267 |     where 
[INFO] [stdout] 268 |         T: Summary + Clone,
[INFO] [stdout]     |                      ^^^^^ required by this bound in `complex_function`
[INFO] [stdout] help: consider annotating `Article` with `#[derive(Clone)]`
[INFO] [stdout]     |
[INFO] [stdout] 212 +     #[derive(Clone)]
[INFO] [stdout] 213 |     struct Article {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0689]: can't call method `abs` on ambiguous numeric type `{float}`
[INFO] [stdout]    --> src/course/class16.rs:383:34
[INFO] [stdout]     |
[INFO] [stdout] 383 |                 ($left - $right).abs() < $epsilon,
[INFO] [stdout]     |                                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 390 |     assert_approx_eq!(3.14, 3.141, 0.01);
[INFO] [stdout]     |     ------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `assert_approx_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/course/class19.rs:353:39
[INFO] [stdout]     |
[INFO] [stdout] 353 |     publisher.subscribe(Rc::downgrade(&email_notifier));
[INFO] [stdout]     |                         ------------- ^^^^^^^^^^^^^^^ expected `&Rc<dyn Observer>`, found `&Rc<EmailNotifier>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&Rc<dyn observer_pattern::Observer>`
[INFO] [stdout]                found reference `&Rc<EmailNotifier>`
[INFO] [stdout]     = help: `EmailNotifier` implements `Observer` so you could box the found value and coerce it to the trait object `Box<dyn Observer>`, you will have to change the expected type as well
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/rc.rs:1772:11
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/course/class19.rs:354:39
[INFO] [stdout]     |
[INFO] [stdout] 354 |     publisher.subscribe(Rc::downgrade(&sms_notifier));
[INFO] [stdout]     |                         ------------- ^^^^^^^^^^^^^ expected `&Rc<dyn Observer>`, found `&Rc<SMSNotifier>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&Rc<dyn observer_pattern::Observer>`
[INFO] [stdout]                found reference `&Rc<SMSNotifier>`
[INFO] [stdout]     = help: `SMSNotifier` implements `Observer` so you could box the found value and coerce it to the trait object `Box<dyn Observer>`, you will have to change the expected type as well
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/rc.rs:1772:11
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0689]: can't call method `abs` on ambiguous numeric type `{float}`
[INFO] [stdout]    --> src/course/class16.rs:383:34
[INFO] [stdout]     |
[INFO] [stdout] 383 |                 ($left - $right).abs() < $epsilon,
[INFO] [stdout]     |                                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 390 |     assert_approx_eq!(3.14, 3.141, 0.01);
[INFO] [stdout]     |     ------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `assert_approx_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/course/class19.rs:353:39
[INFO] [stdout]     |
[INFO] [stdout] 353 |     publisher.subscribe(Rc::downgrade(&email_notifier));
[INFO] [stdout]     |                         ------------- ^^^^^^^^^^^^^^^ expected `&Rc<dyn Observer>`, found `&Rc<EmailNotifier>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&Rc<dyn observer_pattern::Observer>`
[INFO] [stdout]                found reference `&Rc<EmailNotifier>`
[INFO] [stdout]     = help: `EmailNotifier` implements `Observer` so you could box the found value and coerce it to the trait object `Box<dyn Observer>`, you will have to change the expected type as well
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/rc.rs:1772:11
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/course/class19.rs:354:39
[INFO] [stdout]     |
[INFO] [stdout] 354 |     publisher.subscribe(Rc::downgrade(&sms_notifier));
[INFO] [stdout]     |                         ------------- ^^^^^^^^^^^^^ expected `&Rc<dyn Observer>`, found `&Rc<SMSNotifier>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&Rc<dyn observer_pattern::Observer>`
[INFO] [stdout]                found reference `&Rc<SMSNotifier>`
[INFO] [stdout]     = help: `SMSNotifier` implements `Observer` so you could box the found value and coerce it to the trait object `Box<dyn Observer>`, you will have to change the expected type as well
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/alloc/src/rc.rs:1772:11
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of partially moved value: `result1`
[INFO] [stdout]    --> src/course/class6.rs:326:40
[INFO] [stdout]     |
[INFO] [stdout] 314 |         Err(error) => println!("   错误: {}", error),
[INFO] [stdout]     |             ----- value partially moved here
[INFO] [stdout] ...
[INFO] [stdout] 326 |     println!("   result1.is_ok(): {}", result1.is_ok());
[INFO] [stdout]     |                                        ^^^^^^^ value borrowed here after partial move
[INFO] [stdout]     |
[INFO] [stdout]     = note: partial move occurs because value has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] help: borrow this binding in the pattern to avoid moving the value
[INFO] [stdout]     |
[INFO] [stdout] 314 |         Err(ref error) => println!("   错误: {}", error),
[INFO] [stdout]     |             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of partially moved value: `result2`
[INFO] [stdout]    --> src/course/class6.rs:327:41
[INFO] [stdout]     |
[INFO] [stdout] 319 |         Err(error) => println!("   错误: {}", error),
[INFO] [stdout]     |             ----- value partially moved here
[INFO] [stdout] ...
[INFO] [stdout] 327 |     println!("   result2.is_err(): {}", result2.is_err());
[INFO] [stdout]     |                                         ^^^^^^^ value borrowed here after partial move
[INFO] [stdout]     |
[INFO] [stdout]     = note: partial move occurs because value has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] help: borrow this binding in the pattern to avoid moving the value
[INFO] [stdout]     |
[INFO] [stdout] 319 |         Err(ref error) => println!("   错误: {}", error),
[INFO] [stdout]     |             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `result2`
[INFO] [stdout]    --> src/course/class6.rs:336:26
[INFO] [stdout]     |
[INFO] [stdout] 304 |     let result2 = divide(10.0, 0.0);
[INFO] [stdout]     |         ------- move occurs because `result2` has type `std::result::Result<f64, String>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 334 |     println!("   result2.unwrap_or(0.0): {}", result2.unwrap_or(0.0));
[INFO] [stdout]     |                                                       -------------- `result2` moved due to this method call
[INFO] [stdout] 335 |     
[INFO] [stdout] 336 |     let default_result = result2.unwrap_or_else(|_| {
[INFO] [stdout]     |                          ^^^^^^^ value used here after move
[INFO] [stdout]     |
[INFO] [stdout] note: `std::result::Result::<T, E>::unwrap_or` takes ownership of the receiver `self`, which moves `result2`
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/result.rs:1588:27
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]     |
[INFO] [stdout] 334 |     println!("   result2.unwrap_or(0.0): {}", result2.as_ref().unwrap_or(0.0));
[INFO] [stdout]     |                                                      +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]     |
[INFO] [stdout] 334 |     println!("   result2.unwrap_or(0.0): {}", result2.as_mut().unwrap_or(0.0));
[INFO] [stdout]     |                                                      +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]     |
[INFO] [stdout] 334 |     println!("   result2.unwrap_or(0.0): {}", result2.clone().unwrap_or(0.0));
[INFO] [stdout]     |                                                      ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `result1`
[INFO] [stdout]    --> src/course/class6.rs:343:21
[INFO] [stdout]     |
[INFO] [stdout] 303 |     let result1 = divide(10.0, 2.0);
[INFO] [stdout]     |         ------- move occurs because `result1` has type `std::result::Result<f64, String>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 330 |     println!("   result1.unwrap(): {}", result1.unwrap());
[INFO] [stdout]     |                                                 -------- `result1` moved due to this method call
[INFO] [stdout] ...
[INFO] [stdout] 343 |     let mapped_ok = result1.map(|v| v * 2.0);
[INFO] [stdout]     |                     ^^^^^^^ value used here after move
[INFO] [stdout]     |
[INFO] [stdout] note: `std::result::Result::<T, E>::unwrap` takes ownership of the receiver `self`, which moves `result1`
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/result.rs:1225:18
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]     |
[INFO] [stdout] 330 |     println!("   result1.unwrap(): {}", result1.as_ref().unwrap());
[INFO] [stdout]     |                                                +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]     |
[INFO] [stdout] 330 |     println!("   result1.unwrap(): {}", result1.as_mut().unwrap());
[INFO] [stdout]     |                                                +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]     |
[INFO] [stdout] 330 |     println!("   result1.unwrap(): {}", result1.clone().unwrap());
[INFO] [stdout]     |                                                ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `result2`
[INFO] [stdout]    --> src/course/class6.rs:344:22
[INFO] [stdout]     |
[INFO] [stdout] 304 |       let result2 = divide(10.0, 0.0);
[INFO] [stdout]     |           ------- move occurs because `result2` has type `std::result::Result<f64, String>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 336 |       let default_result = result2.unwrap_or_else(|_| {
[INFO] [stdout]     |  __________________________________-
[INFO] [stdout] 337 | |         println!("   使用默认值");
[INFO] [stdout] 338 | |         -1.0
[INFO] [stdout] 339 | |     });
[INFO] [stdout]     | |______- `result2` moved due to this method call
[INFO] [stdout] ...
[INFO] [stdout] 344 |       let mapped_err = result2.map_err(|e| format!("映射错误: {}", e));
[INFO] [stdout]     |                        ^^^^^^^ value used here after move
[INFO] [stdout]     |
[INFO] [stdout] note: `std::result::Result::<T, E>::unwrap_or_else` takes ownership of the receiver `self`, which moves `result2`
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/result.rs:1614:35
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]     |
[INFO] [stdout] 336 |     let default_result = result2.as_ref().unwrap_or_else(|_| {
[INFO] [stdout]     |                                 +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]     |
[INFO] [stdout] 336 |     let default_result = result2.as_mut().unwrap_or_else(|_| {
[INFO] [stdout]     |                                 +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]     |
[INFO] [stdout] 336 |     let default_result = result2.clone().unwrap_or_else(|_| {
[INFO] [stdout]     |                                 ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> src/course/class8.rs:325:22
[INFO] [stdout]     |
[INFO] [stdout] 325 |         .filter(|(_, &freq)| freq == *max_freq)
[INFO] [stdout]     |                      ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> src/course/class8.rs:325:18
[INFO] [stdout]     |
[INFO] [stdout] 325 |         .filter(|(_, &freq)| freq == *max_freq)
[INFO] [stdout]     |                  ^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 325 |         .filter(|&(_, &freq)| freq == *max_freq)
[INFO] [stdout]     |                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of partially moved value: `result1`
[INFO] [stdout]    --> src/course/class6.rs:326:40
[INFO] [stdout]     |
[INFO] [stdout] 314 |         Err(error) => println!("   错误: {}", error),
[INFO] [stdout]     |             ----- value partially moved here
[INFO] [stdout] ...
[INFO] [stdout] 326 |     println!("   result1.is_ok(): {}", result1.is_ok());
[INFO] [stdout]     |                                        ^^^^^^^ value borrowed here after partial move
[INFO] [stdout]     |
[INFO] [stdout]     = note: partial move occurs because value has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] help: borrow this binding in the pattern to avoid moving the value
[INFO] [stdout]     |
[INFO] [stdout] 314 |         Err(ref error) => println!("   错误: {}", error),
[INFO] [stdout]     |             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of partially moved value: `result2`
[INFO] [stdout]    --> src/course/class6.rs:327:41
[INFO] [stdout]     |
[INFO] [stdout] 319 |         Err(error) => println!("   错误: {}", error),
[INFO] [stdout]     |             ----- value partially moved here
[INFO] [stdout] ...
[INFO] [stdout] 327 |     println!("   result2.is_err(): {}", result2.is_err());
[INFO] [stdout]     |                                         ^^^^^^^ value borrowed here after partial move
[INFO] [stdout]     |
[INFO] [stdout]     = note: partial move occurs because value has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] help: borrow this binding in the pattern to avoid moving the value
[INFO] [stdout]     |
[INFO] [stdout] 319 |         Err(ref error) => println!("   错误: {}", error),
[INFO] [stdout]     |             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `result2`
[INFO] [stdout]    --> src/course/class6.rs:336:26
[INFO] [stdout]     |
[INFO] [stdout] 304 |     let result2 = divide(10.0, 0.0);
[INFO] [stdout]     |         ------- move occurs because `result2` has type `std::result::Result<f64, String>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 334 |     println!("   result2.unwrap_or(0.0): {}", result2.unwrap_or(0.0));
[INFO] [stdout]     |                                                       -------------- `result2` moved due to this method call
[INFO] [stdout] 335 |     
[INFO] [stdout] 336 |     let default_result = result2.unwrap_or_else(|_| {
[INFO] [stdout]     |                          ^^^^^^^ value used here after move
[INFO] [stdout]     |
[INFO] [stdout] note: `std::result::Result::<T, E>::unwrap_or` takes ownership of the receiver `self`, which moves `result2`
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/result.rs:1588:27
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]     |
[INFO] [stdout] 334 |     println!("   result2.unwrap_or(0.0): {}", result2.as_ref().unwrap_or(0.0));
[INFO] [stdout]     |                                                      +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]     |
[INFO] [stdout] 334 |     println!("   result2.unwrap_or(0.0): {}", result2.as_mut().unwrap_or(0.0));
[INFO] [stdout]     |                                                      +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]     |
[INFO] [stdout] 334 |     println!("   result2.unwrap_or(0.0): {}", result2.clone().unwrap_or(0.0));
[INFO] [stdout]     |                                                      ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `result1`
[INFO] [stdout]    --> src/course/class6.rs:343:21
[INFO] [stdout]     |
[INFO] [stdout] 303 |     let result1 = divide(10.0, 2.0);
[INFO] [stdout]     |         ------- move occurs because `result1` has type `std::result::Result<f64, String>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 330 |     println!("   result1.unwrap(): {}", result1.unwrap());
[INFO] [stdout]     |                                                 -------- `result1` moved due to this method call
[INFO] [stdout] ...
[INFO] [stdout] 343 |     let mapped_ok = result1.map(|v| v * 2.0);
[INFO] [stdout]     |                     ^^^^^^^ value used here after move
[INFO] [stdout]     |
[INFO] [stdout] note: `std::result::Result::<T, E>::unwrap` takes ownership of the receiver `self`, which moves `result1`
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/result.rs:1225:18
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]     |
[INFO] [stdout] 330 |     println!("   result1.unwrap(): {}", result1.as_ref().unwrap());
[INFO] [stdout]     |                                                +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]     |
[INFO] [stdout] 330 |     println!("   result1.unwrap(): {}", result1.as_mut().unwrap());
[INFO] [stdout]     |                                                +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]     |
[INFO] [stdout] 330 |     println!("   result1.unwrap(): {}", result1.clone().unwrap());
[INFO] [stdout]     |                                                ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `result2`
[INFO] [stdout]    --> src/course/class6.rs:344:22
[INFO] [stdout]     |
[INFO] [stdout] 304 |       let result2 = divide(10.0, 0.0);
[INFO] [stdout]     |           ------- move occurs because `result2` has type `std::result::Result<f64, String>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 336 |       let default_result = result2.unwrap_or_else(|_| {
[INFO] [stdout]     |  __________________________________-
[INFO] [stdout] 337 | |         println!("   使用默认值");
[INFO] [stdout] 338 | |         -1.0
[INFO] [stdout] 339 | |     });
[INFO] [stdout]     | |______- `result2` moved due to this method call
[INFO] [stdout] ...
[INFO] [stdout] 344 |       let mapped_err = result2.map_err(|e| format!("映射错误: {}", e));
[INFO] [stdout]     |                        ^^^^^^^ value used here after move
[INFO] [stdout]     |
[INFO] [stdout] note: `std::result::Result::<T, E>::unwrap_or_else` takes ownership of the receiver `self`, which moves `result2`
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/result.rs:1614:35
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]     |
[INFO] [stdout] 336 |     let default_result = result2.as_ref().unwrap_or_else(|_| {
[INFO] [stdout]     |                                 +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]     |
[INFO] [stdout] 336 |     let default_result = result2.as_mut().unwrap_or_else(|_| {
[INFO] [stdout]     |                                 +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]     |
[INFO] [stdout] 336 |     let default_result = result2.clone().unwrap_or_else(|_| {
[INFO] [stdout]     |                                 ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly dereference within an implicitly-borrowing pattern
[INFO] [stdout]    --> src/course/class8.rs:325:22
[INFO] [stdout]     |
[INFO] [stdout] 325 |         .filter(|(_, &freq)| freq == *max_freq)
[INFO] [stdout]     |                      ^ reference pattern not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> src/course/class8.rs:325:18
[INFO] [stdout]     |
[INFO] [stdout] 325 |         .filter(|(_, &freq)| freq == *max_freq)
[INFO] [stdout]     |                  ^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: match on the reference with a reference pattern to avoid implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] 325 |         .filter(|&(_, &freq)| freq == *max_freq)
[INFO] [stdout]     |                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data1`
[INFO] [stdout]   --> src/course/class15.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |         let data1 = Rc::clone(&data);
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_data1`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]    --> src/course/class15.rs:311:9
[INFO] [stdout]     |
[INFO] [stdout] 311 |     let d = CustomSmartPointer {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timer`
[INFO] [stdout]   --> src/course/class17.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let timer = TimerFuture::new();
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_timer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item`
[INFO] [stdout]    --> src/course/class18.rs:458:32
[INFO] [stdout]     |
[INFO] [stdout] 458 |         pub fn push(&mut self, item: T) {
[INFO] [stdout]     |                                ^^^^ help: if this is intentional, prefix it with an underscore: `_item`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data1`
[INFO] [stdout]   --> src/course/class15.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |         let data1 = Rc::clone(&data);
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_data1`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]    --> src/course/class15.rs:311:9
[INFO] [stdout]     |
[INFO] [stdout] 311 |     let d = CustomSmartPointer {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timer`
[INFO] [stdout]   --> src/course/class17.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let timer = TimerFuture::new();
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_timer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item`
[INFO] [stdout]    --> src/course/class18.rs:458:32
[INFO] [stdout]     |
[INFO] [stdout] 458 |         pub fn push(&mut self, item: T) {
[INFO] [stdout]     |                                ^^^^ help: if this is intentional, prefix it with an underscore: `_item`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0252, E0277, E0282, E0308, E0382, E0425, E0432, E0433, E0689.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0252`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `RustLearn` (bin "RustLearn") due to 29 previous errors; 13 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] Some errors have detailed explanations: E0252, E0277, E0282, E0308, E0382, E0425, E0432, E0433, E0689.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0252`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `RustLearn` (bin "RustLearn" test) due to 29 previous errors; 14 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "f1218f261c256fc9e126c4f00f391430a2a2c849625471a3544053d80a26eaf1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f1218f261c256fc9e126c4f00f391430a2a2c849625471a3544053d80a26eaf1", kill_on_drop: false }`
[INFO] [stdout] f1218f261c256fc9e126c4f00f391430a2a2c849625471a3544053d80a26eaf1
